package com.zanglikun.apacheCommonUtil.apacheTika;

import lombok.SneakyThrows;
import org.apache.tika.Tika;
import org.apache.tika.mime.MimeType;
import org.apache.tika.mime.MimeTypes;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * @author : zanglikun
 * @date : 2024/9/1 下午9:35
 * @desc : Copyright © zanglikun.com
 * 用来解析真实的文件类型，因为你修改了文件后缀，但是文件的魔数可能还是原来的。
 * 文件的魔数（Magic Number）是文件中特定位置的固定字节序列，用于标识文件类型或格式。不同类型的文件通常具有特定的魔数，用于识别文件的内容。
 */
public class TikaUtilsTest {
    @SneakyThrows
    public static void main(String[] args) {
        Tika tika = new Tika();
        String miniTypeName = tika.detect("https://www.zanglikun.com/wp-content/uploads/2023/02/20230209204446391.png");
        System.out.println("文件的真实类型是：" + miniTypeName);  // image/png

        MimeTypes defaultMimeTypes = MimeTypes.getDefaultMimeTypes();
        MimeType mimeType = defaultMimeTypes.forName(miniTypeName);
        System.out.println("miniType是：" + mimeType.getName()); // image/png
        System.out.println("拓展名为（文件后缀修改前后，拓展名不变，可以依次来判断文件到底是啥）：" + mimeType.getExtension()); // .png


        File file = new File("/Users/zanglikun/Downloads/IMG_0929.png");
        System.out.println(file.getAbsolutePath());
        String s = Files.probeContentType(Paths.get(file.getAbsolutePath()));
        System.out.println(s); // null

    }
}
